package com.jackiechan.day16;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

public class Test_Note {
    public static void main(String[] args) throws ClassNotFoundException {
        Hello hello = new Hello();
        hello.ma(1);
        hello.getClass();
//        Class<?> clazz = Class.forName("哈哈");
//        Mapper mapper = clazz.getAnnotation(Mapper.class);
//        if (mapper != null){
//            System.out.println(mapper);
//            System.out.println(mapper.value());
//            System.out.println(mapper.name());
//        }
    }

}

// 使用注解
@Mapper  // TYPE 类
class Hello {
    @Mapper(name = "jacky", value = "chan") // FIELD 成员变量
    int i;

    @Mapper(name = "龙") // METHOD 方法
    public void ma(@Mapper(name = "成龙") int age) { // PARAMETER 参数
        @Mapper(name = "龙叔") // LOCAL_VARIABLE 局部变量
        int j = 0;
        System.out.println(j);
        System.out.println(Mapper.class);
    }
}

// 定义注解  -- 语法: @interface 注解名
@Target({ElementType.TYPE,
        ElementType.FIELD,
        ElementType.METHOD,
        ElementType.PARAMETER,
        ElementType.LOCAL_VARIABLE,
        ElementType.CONSTRUCTOR})
@Retention(RetentionPolicy.SOURCE)
@interface Mapper {
    // 给注解添加功能
    // 只能添加属性, 不能添加方法
    String name() default "Jackie"; // 定义属性
    String value() default "";      // 特殊属性
}